home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch10c < prev    next >
Encoding:
Text File  |  1991-02-08  |  53.8 KB  |  1,567 lines

  1. Subject:  v12i027:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch10c
  2. Newsgroups: comp.sources.games
  3. Approved: billr@saab.CNA.TEK.COM
  4.  
  5. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  6. Posting-number: Volume 12, Issue 27
  7. Archive-name: NetHack3/Patch10c
  8. Patch-To: NetHack3: Volume 7, Issue 56-93
  9. Environment: 
  10.  
  11.  
  12.  
  13. #! /bin/sh
  14. # This is a shell archive.  Remove anything before this line, then unpack
  15. # it by saving it into a file and typing "sh file".  To overwrite existing
  16. # files, type "sh file -c".  You can also feed this as standard input via
  17. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  18. # will see the following message at the end:
  19. #        "End of archive 3 (of 8)."
  20. # Contents:  UPDATE10 patch10.05
  21. # Wrapped by billr@saab on Fri Feb  8 17:18:58 1991
  22. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  23. if test -f 'UPDATE10' -a "${1}" != "-c" ; then 
  24.   echo shar: Renaming existing file \"'UPDATE10'\" to \"'UPDATE10.orig'\"
  25.   mv -f 'UPDATE10' 'UPDATE10.orig'
  26. fi
  27. echo shar: Extracting \"'UPDATE10'\" \(1068 characters\)
  28. sed "s/^X//" >'UPDATE10' <<'END_OF_FILE'
  29. XUPDATE10
  30. X
  31. XPatch 10 to NetHack 3.0 adds no new features, and few optimizations.
  32. XIt fixes many mostly rare bugs and extends support to a couple more
  33. Xsystem variants.
  34. X
  35. XThe major change with this patch is that the MSDOS overlay manager is
  36. Xnow bright enough to split up one logical executable among several disk
  37. Xfiles, thus simplifying distribution via floppies since each file can
  38. Xbe <360K.  Entering debugging mode for the Macintosh is simplified.
  39. XThere are provisions for later versions of several compilers, although
  40. Xnot yet Turbo C++, as we have not gotten an executable with adequate
  41. Xperformance (see Install.ovl for gory details).
  42. X
  43. XNetHack should now get along better with Irises, IBM RS/6000s, NeXTs,
  44. Xand possibly even SCO UNIX.
  45. X
  46. XAmong the dead bugs are those involving artifact damage, VMS file
  47. Xmanipulation, crushed iron balls, elven equipment, orcs with 2^32-1
  48. Xdaggers, trolls with ridiculously high hitpoints, exploding bags of
  49. Xholding on the ground, inappropriate messages, saved luck, unbounded
  50. Xdigging on special levels, and several distinct trap problems.
  51. X
  52. END_OF_FILE
  53. if test 1068 -ne `wc -c <'UPDATE10'`; then
  54.     echo shar: \"'UPDATE10'\" unpacked with wrong size!
  55. fi
  56. # end of 'UPDATE10'
  57. if test -f 'patch10.05' -a "${1}" != "-c" ; then 
  58.   echo shar: Renaming existing file \"'patch10.05'\" to \"'patch10.05.orig'\"
  59.   mv -f 'patch10.05' 'patch10.05.orig'
  60. fi
  61. echo shar: Extracting \"'patch10.05'\" \(50416 characters\)
  62. sed "s/^X//" >'patch10.05' <<'END_OF_FILE'
  63. X*** auxil/Guidebook.mn    Tue Jun 26 21:19:58 1990
  64. X--- auxil/Guidebook.mn    Sun Feb  3 12:33:05 1991
  65. X***************
  66. X*** 1221,1243 ****
  67. X  .TS S
  68. X  center;
  69. X  c c c.
  70. X! Richard Addison    Bruce Holloway    Pat Rankin
  71. X! Tom Almy    Richard P. Hughey    Eric S. Raymond
  72. X! Ken Arromdee    Ari Huttunen    John Rupley
  73. X! Eric Backus    Del Lamb    Olaf Seibert
  74. X! John S. Bien    Greg Laskin    Kevin Sitze
  75. X! Ralf Brown    Johnny Lee    Eric R. Smith
  76. X! Jean-Christophe Collet    Steve Linhart    Kevin Smolkowski
  77. X! Steve Creps    Ken Lorber    Michael Sokolov
  78. X! Kevin Darcy    Benson I. Margulies    Stephen Spackman
  79. X! Matthew Day    Pierre Martineau    Andy Swanson
  80. X! Joshua Delahunty    Roland McGrath    Kevin Sweet
  81. X! Jochen Erwied    Norm Meluch    Scott R. Turner
  82. X! David Gentzel    Bruce Mewborne    Janet Walz
  83. X! Mark Gooderum    Izchak Miller    Jon Watte
  84. X! David Hairston    Gil Neiger    Tom West
  85. X! Timo Hakulinen    Greg Olson    Gregg Wonderly
  86. X! Eric Hendrickson    Mike Passaretti
  87. X  .TE
  88. X  .ed
  89. X  
  90. X--- 1221,1243 ----
  91. X  .TS S
  92. X  center;
  93. X  c c c.
  94. X! Richard Addison    Bruce Holloway    Mike Passaretti
  95. X! Tom Almy    Richard P. Hughey    Pat Rankin
  96. X! Ken Arromdee    Ari Huttunen    Eric S. Raymond
  97. X! Eric Backus    Del Lamb    John Rupley
  98. X! John S. Bien    Greg Laskin    Olaf Seibert
  99. X! Ralf Brown    Johnny Lee    Kevin Sitze
  100. X! Jean-Christophe Collet    Merlyn LeRoy    Eric R. Smith
  101. X! Steve Creps    Steve Linhart    Kevin Smolkowski
  102. X! Kevin Darcy    Ken Lorber    Michael Sokolov
  103. X! Matthew Day    Benson I. Margulies    Stephen Spackman
  104. X! Joshua Delahunty    Pierre Martineau    Andy Swanson
  105. X! Jochen Erwied    Roland McGrath    Kevin Sweet
  106. X! David Gentzel    Norm Meluch    Scott R. Turner
  107. X! Mark Gooderum    Bruce Mewborne    Janet Walz
  108. X! David Hairston    Izchak Miller    Jon Watte
  109. X! Timo Hakulinen    Gil Neiger    Tom West
  110. X! Eric Hendrickson    Greg Olson    Gregg Wonderly
  111. X  .TE
  112. X  .ed
  113. X  
  114. X*** auxil/Guidebook.mss    Tue Jun 26 21:20:00 1990
  115. X--- auxil/Guidebook.mss    Sun Feb  3 12:33:11 1991
  116. X***************
  117. X*** 1183,1205 ****
  118. X  particularly  intriguing modification to help out with the game.  The Gods of
  119. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  120. X  in this, the list of Dungeoneers:
  121. X! Richard Addison           Bruce Holloway            Pat Rankin
  122. X! Tom Almy                  Richard P. Hughey         Eric S. Raymond
  123. X! Ken Arromdee              Ari Huttunen              John Rupley
  124. X! Eric Backus               Del Lamb                  Olaf Seibert
  125. X! John S. Bien              Greg Laskin               Kevin Sitze
  126. X! Ralf Brown                Johnny Lee                Eric R. Smith
  127. X! Jean-Christophe Collet    Steve Linhart             Kevin Smolkowski
  128. X! Steve Creps               Ken Lorber                Michael Sokolov
  129. X! Kevin Darcy               Benson I. Margulies       Stephen Spackman
  130. X! Matthew Day               Pierre Martineau          Andy Swanson
  131. X! Joshua Delahunty          Roland McGrath            Kevin Sweet
  132. X! Jochen Erwied             Norm Meluch               Scott R. Turner
  133. X! David Gentzel             Bruce Mewborne            Janet Walz
  134. X! Mark Gooderum             Izchak Miller             Jon Watte
  135. X! David Hairston            Gil Neiger                Tom West
  136. X! Timo Hakulinen            Greg Olson                Gregg Wonderly
  137. X! Eric Hendrickson          Mike Passaretti
  138. X  
  139. X      Brand  and product names are trademarks or registered trademarks of their
  140. X  respective holders.
  141. X--- 1183,1205 ----
  142. X  particularly  intriguing modification to help out with the game.  The Gods of
  143. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  144. X  in this, the list of Dungeoneers:
  145. X! Richard Addison           Bruce Holloway         Mike Passaretti
  146. X! Tom Almy                  Richard P. Hughey      Pat Rankin
  147. X! Ken Arromdee              Ari Huttunen           Eric S. Raymond
  148. X! Eric Backus               Del Lamb               John Rupley
  149. X! John S. Bien              Greg Laskin            Olaf Seibert
  150. X! Ralf Brown                Johnny Lee             Kevin Sitze
  151. X! Jean-Christophe Collet    Merlyn LeRoy           Eric R. Smith
  152. X! Steve Creps               Steve Linhart          Kevin Smolkowski
  153. X! Kevin Darcy               Ken Lorber             Michael Sokolov
  154. X! Matthew Day               Benson I. Margulies    Stephen Spackman
  155. X! Joshua Delahunty          Pierre Martineau       Andy Swanson
  156. X! Jochen Erwied             Roland McGrath         Kevin Sweet
  157. X! David Gentzel             Norm Meluch            Scott R. Turner
  158. X! Mark Gooderum             Bruce Mewborne         Janet Walz
  159. X! David Hairston            Izchak Miller          Jon Watte
  160. X! Timo Hakulinen            Gil Neiger             Tom West
  161. X! Eric Hendrickson          Greg Olson             Gregg Wonderly
  162. X  
  163. X      Brand  and product names are trademarks or registered trademarks of their
  164. X  respective holders.
  165. X*** auxil/Guidebook.tex    Tue Jun 26 21:20:02 1990
  166. X--- auxil/Guidebook.tex    Sun Feb  3 12:32:57 1991
  167. X***************
  168. X*** 459,466 ****
  169. X  %.lp
  170. X  \item[\tb{/}]
  171. X  Tell what a symbol represents.  You may choose to specify a location
  172. X- or type a symbol to define.
  173. X- Tell what a symbol represents.  You may choose to specify a location
  174. X  or type a symbol (or even a whole word) to define.  If the
  175. X  %.op
  176. X  {\it help\/}
  177. X--- 459,464 ----
  178. X***************
  179. X*** 1346,1352 ****
  180. X  %.lp
  181. X  \item[\ib{graphics}]
  182. X  Set the graphics symbols for screen displays (default
  183. X! ``\verb&|--------|||-\/.-|+.#<>& \verb&^"}{#\_<>##&''). The
  184. X  %.op
  185. X  {\it graphics\/}
  186. X  option (if used) should come last, followed by a string of up to 35
  187. X--- 1344,1350 ----
  188. X  %.lp
  189. X  \item[\ib{graphics}]
  190. X  Set the graphics symbols for screen displays (default
  191. X! ``\verb&|--------|||-\\/.-|+.#<>& \verb&^"}{#\\_<>##&''). The
  192. X  %.op
  193. X  {\it graphics\/}
  194. X  option (if used) should come last, followed by a string of up to 35
  195. X***************
  196. X*** 1356,1365 ****
  197. X  
  198. X  The
  199. X  %.op
  200. X! {\it DECgraphics}
  201. X  and
  202. X  %.op
  203. X! {\it IBMgraphics}
  204. X  options use predefined selections of graphics symbols, so you need not
  205. X  go to the trouble of setting up a full graphics string for these common
  206. X  cases.  These two options also set up proper handling of graphics
  207. X--- 1354,1363 ----
  208. X  
  209. X  The
  210. X  %.op
  211. X! {\it DECgraphics\/}
  212. X  and
  213. X  %.op
  214. X! {\it IBMgraphics\/}
  215. X  options use predefined selections of graphics symbols, so you need not
  216. X  go to the trouble of setting up a full graphics string for these common
  217. X  cases.  These two options also set up proper handling of graphics
  218. X***************
  219. X*** 1604,1626 ****
  220. X  %.sd
  221. X  \begin{center}
  222. X  \begin{tabular}{lll}
  223. X! Richard Addison         & Bruce Holloway        & Pat Rankin      \\
  224. X! Tom Almy                & Richard P. Hughey     & Eric S. Raymond \\
  225. X! Ken Arromdee            & Ari Huttunen          & John Rupley     \\
  226. X! Eric Backus             & Del Lamb              & Olaf Seibert    \\
  227. X! John S. Bien            & Greg Laskin           & Kevin Sitze     \\
  228. X! Ralf Brown              & Johnny Lee            & Eric R. Smith   \\
  229. X! Jean-Christophe Collet  & Steve Linhart         & Kevin Smolkowski\\
  230. X! Steve Creps             & Ken Lorber            & Michael Sokolov \\
  231. X! Kevin Darcy             & Benson I. Margulies   & Stephen Spackman\\
  232. X! Matthew Day             & Pierre Martineau      & Andy Swanson    \\
  233. X! Joshua Delahunty        & Roland McGrath        & Kevin Sweet     \\
  234. X! Jochen Erwied           & Norm Meluch           & Scott R. Turner \\
  235. X! David Gentzel           & Bruce Mewborne        & Janet Walz      \\
  236. X! Mark Gooderum           & Izchak Miller         & Jon W\"atte     \\
  237. X! David Hairston          & Gil Neiger            & Tom West        \\
  238. X! Timo Hakulinen          & Greg Olson            & Gregg Wonderly  \\
  239. X! Eric Hendrickson        & Mike Passaretti       &
  240. X  \end{tabular}
  241. X  \end{center}
  242. X  %.ed
  243. X--- 1602,1624 ----
  244. X  %.sd
  245. X  \begin{center}
  246. X  \begin{tabular}{lll}
  247. X! Richard Addison         & Bruce Holloway        & Mike Passaretti \\
  248. X! Tom Almy                & Richard P. Hughey     & Pat Rankin      \\
  249. X! Ken Arromdee            & Ari Huttunen          & Eric S. Raymond \\
  250. X! Eric Backus             & Del Lamb              & John Rupley     \\
  251. X! John S. Bien            & Greg Laskin           & Olaf Seibert    \\
  252. X! Ralf Brown              & Johnny Lee            & Kevin Sitze     \\
  253. X! Jean-Christophe Collet  & Merlyn LeRoy          & Eric R. Smith   \\
  254. X! Steve Creps             & Steve Linhart         & Kevin Smolkowski\\
  255. X! Kevin Darcy             & Ken Lorber            & Michael Sokolov \\
  256. X! Matthew Day             & Benson I. Margulies   & Stephen Spackman\\
  257. X! Joshua Delahunty        & Pierre Martineau      & Andy Swanson    \\
  258. X! Jochen Erwied           & Roland McGrath        & Kevin Sweet     \\
  259. X! David Gentzel           & Norm Meluch           & Scott R. Turner \\
  260. X! Mark Gooderum           & Bruce Mewborne        & Janet Walz      \\
  261. X! David Hairston          & Izchak Miller         & Jon W\"atte     \\
  262. X! Timo Hakulinen          & Gil Neiger            & Tom West        \\
  263. X! Eric Hendrickson        & Greg Olson            & Gregg Wonderly
  264. X  \end{tabular}
  265. X  \end{center}
  266. X  %.ed
  267. X*** auxil/history    Sat May 26 19:29:48 1990
  268. X--- auxil/history    Thu Jan 31 16:05:34 1991
  269. X***************
  270. X*** 43,62 ****
  271. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  272. X  in this, the list of Dungeoneers:
  273. X  
  274. X!     Richard Addison           Bruce Holloway         Pat Rankin
  275. X!     Tom Almy                  Richard P. Hughey      Eric S. Raymond
  276. X!     Ken Arromdee              Ari Huttunen           John Rupley
  277. X!     Eric Backus               Del Lamb               Olaf Seibert
  278. X!     John S. Bien              Greg Laskin            Kevin Sitze
  279. X!     Ralf Brown                Johnny Lee             Eric R. Smith
  280. X!     Jean-Christophe Collet    Steve Linhart          Kevin Smolkowski
  281. X!     Steve Creps               Ken Lorber             Michael Sokolov
  282. X!     Kevin Darcy               Benson I. Margulies    Stephen Spackman
  283. X!     Matthew Day               Pierre Martineau       Andy Swanson
  284. X!     Joshua Delahunty          Roland McGrath         Kevin Sweet
  285. X!     Jochen Erwied             Norm Meluch            Scott R. Turner
  286. X!     David Gentzel             Bruce Mewborne         Janet Walz
  287. X!     Mark Gooderum             Izchak Miller          Jon Watte
  288. X!     David Hairston            Gil Neiger             Tom West
  289. X!     Timo Hakulinen            Greg Olson             Gregg Wonderly
  290. X!     Eric Hendrickson          Mike Passaretti
  291. X--- 43,62 ----
  292. X  the Dungeon sometimes make note of the names of the worst of these miscreants
  293. X  in this, the list of Dungeoneers:
  294. X  
  295. X!     Richard Addison           Bruce Holloway         Mike Passaretti
  296. X!     Tom Almy                  Richard P. Hughey      Pat Rankin
  297. X!     Ken Arromdee              Ari Huttunen           Eric S. Raymond
  298. X!     Eric Backus               Del Lamb               John Rupley
  299. X!     John S. Bien              Greg Laskin            Olaf Seibert
  300. X!     Ralf Brown                Johnny Lee             Kevin Sitze
  301. X!     Jean-Christophe Collet    Merlyn LeRoy           Eric R. Smith
  302. X!     Steve Creps               Steve Linhart          Kevin Smolkowski
  303. X!     Kevin Darcy               Ken Lorber             Michael Sokolov
  304. X!     Matthew Day               Benson I. Margulies    Stephen Spackman
  305. X!     Joshua Delahunty          Pierre Martineau       Andy Swanson
  306. X!     Jochen Erwied             Roland McGrath         Kevin Sweet
  307. X!     David Gentzel             Norm Meluch            Scott R. Turner
  308. X!     Mark Gooderum             Bruce Mewborne         Janet Walz
  309. X!     David Hairston            Izchak Miller          Jon Watte
  310. X!     Timo Hakulinen            Gil Neiger             Tom West
  311. X!     Eric Hendrickson          Greg Olson             Gregg Wonderly
  312. X*** include/extern.h    Tue Jun 26 21:20:05 1990
  313. X--- include/extern.h    Wed Jan 30 08:48:46 1991
  314. X***************
  315. X*** 1235,1240 ****
  316. X--- 1235,1241 ----
  317. X  /* ### termcap.c ### */
  318. X  
  319. X  E void NDECL(startup);
  320. X+ E void FDECL(number_pad, (int));
  321. X  E void NDECL(start_screen);
  322. X  E void NDECL(end_screen);
  323. X  #ifdef CLIPPING
  324. X***************
  325. X*** 1307,1313 ****
  326. X  
  327. X  E boolean FDECL(rust_dmg, (struct obj *,const char *,int,BOOLEAN_P));
  328. X  E struct trap *FDECL(maketrap, (int,int,int));
  329. X- E int FDECL(teleok, (int,int));
  330. X  E void FDECL(fall_through, (BOOLEAN_P));
  331. X  E void FDECL(dotrap, (struct trap *));
  332. X  E int FDECL(mintrap, (struct monst *));
  333. X--- 1308,1313 ----
  334. X***************
  335. X*** 1378,1384 ****
  336. X  E int NDECL(phase_of_the_moon);
  337. X  E int NDECL(night);
  338. X  E int NDECL(midnight);
  339. X! E void FDECL(gethdate, (char *));
  340. X  E int FDECL(uptodate, (int));
  341. X  E void NDECL(getlock);
  342. X  E void FDECL(regularize, (char *));
  343. X--- 1378,1384 ----
  344. X  E int NDECL(phase_of_the_moon);
  345. X  E int NDECL(night);
  346. X  E int NDECL(midnight);
  347. X! E void FDECL(gethdate, (const char *));
  348. X  E int FDECL(uptodate, (int));
  349. X  E void NDECL(getlock);
  350. X  E void FDECL(regularize, (char *));
  351. X***************
  352. X*** 1445,1450 ****
  353. X--- 1445,1451 ----
  354. X  E void FDECL(regularize, (char *));
  355. X  E int FDECL(vms_creat, (char *,unsigned int));
  356. X  E int NDECL(vms_getuid);
  357. X+ E const char *NDECL(verify_termcap);
  358. X  E void NDECL(privoff);
  359. X  E void NDECL(privon);
  360. X  # ifdef SHELL
  361. X*** include/global.h    Thu May 17 23:20:32 1990
  362. X--- include/global.h    Tue Feb  5 08:41:45 1991
  363. X***************
  364. X*** 9,15 ****
  365. X  
  366. X  
  367. X  /* #define BETA        /* if a beta-test copy  [MRS] */
  368. X! #define VERSION "3.0i"  /* version number. */
  369. X  
  370. X  /*
  371. X   * Files expected to exist in the playground directory.
  372. X--- 9,15 ----
  373. X  
  374. X  
  375. X  /* #define BETA        /* if a beta-test copy  [MRS] */
  376. X! #define VERSION "3.0j"  /* version number. */
  377. X  
  378. X  /*
  379. X   * Files expected to exist in the playground directory.
  380. X*** include/obj.h    Sat Mar 31 10:39:26 1990
  381. X--- include/obj.h    Tue Jan 29 16:57:57 1991
  382. X***************
  383. X*** 5,10 ****
  384. X--- 5,13 ----
  385. X  #ifndef OBJ_H
  386. X  #define OBJ_H
  387. X  
  388. X+ /* #define obj obj_nh    /* uncomment for SCO UNIX, which has a conflicting
  389. X+              * typedef for "obj" in <sys/types.h> */
  390. X+ 
  391. X  struct obj {
  392. X      struct obj *nobj;
  393. X      struct obj *nexthere;        /* for location lists */
  394. X*** include/patchlevel.h    Tue Jun 26 21:20:06 1990
  395. X--- include/patchlevel.h    Mon Feb  4 16:43:42 1991
  396. X***************
  397. X*** 104,107 ****
  398. X   *  and fix a couple more bugs
  399. X   */
  400. X  
  401. X! #define PATCHLEVEL    9
  402. X--- 104,114 ----
  403. X   *  and fix a couple more bugs
  404. X   */
  405. X  
  406. X! /*
  407. X!  *  Patch 10, February 5, 1991
  408. X!  *  extend overlay manager to multiple files for easier binary distribution
  409. X!  *  allow for more system and compiler variance
  410. X!  *  remove more small insects
  411. X!  */
  412. X! 
  413. X! #define PATCHLEVEL    10
  414. X*** include/system.h    Tue Jun 26 21:20:06 1990
  415. X--- include/system.h    Sat Feb  2 16:46:26 1991
  416. X***************
  417. X*** 200,206 ****
  418. X  #  ifdef THINKC4
  419. X  E size_t    FDECL(strlen, (char *));
  420. X  #  else
  421. X! E int    FDECL(strlen, (char *));
  422. X  #  endif /* THINKC4 */
  423. X  # endif /* HPUX */
  424. X  #endif /* MSDOS */
  425. X--- 200,206 ----
  426. X  #  ifdef THINKC4
  427. X  E size_t    FDECL(strlen, (char *));
  428. X  #  else
  429. X! E int    FDECL(strlen, (const char *));
  430. X  #  endif /* THINKC4 */
  431. X  # endif /* HPUX */
  432. X  #endif /* MSDOS */
  433. X***************
  434. X*** 262,276 ****
  435. X  E char *FDECL(tgoto, (const char *,int,int));
  436. X  E void FDECL(tputs, (const char *,int,int (*)()));
  437. X  #else
  438. X! E int FDECL(tgetent, (char *,char *));
  439. X  E int FDECL(tgetnum, (char *));
  440. X  E int FDECL(tgetflag, (char *));
  441. X  E char *FDECL(tgetstr, (char *,char **));
  442. X  E char *FDECL(tgoto, (char *,int,int));
  443. X! E void FDECL(tputs, (char *,int,int (*)()));
  444. X  #endif
  445. X  
  446. X! #ifndef MACOS
  447. X  E genericptr_t FDECL(malloc, (size_t));
  448. X  #endif
  449. X  
  450. X--- 262,276 ----
  451. X  E char *FDECL(tgoto, (const char *,int,int));
  452. X  E void FDECL(tputs, (const char *,int,int (*)()));
  453. X  #else
  454. X! E int FDECL(tgetent, (char *,const char *));
  455. X  E int FDECL(tgetnum, (char *));
  456. X  E int FDECL(tgetflag, (char *));
  457. X  E char *FDECL(tgetstr, (char *,char **));
  458. X  E char *FDECL(tgoto, (char *,int,int));
  459. X! E void FDECL(tputs, (const char *,int,int (*)()));
  460. X  #endif
  461. X  
  462. X! #if defined(ALLOC_C) && !defined(MACOS)
  463. X  E genericptr_t FDECL(malloc, (size_t));
  464. X  #endif
  465. X  
  466. X*** include/unixconf.h    Sun Apr  8 23:47:45 1990
  467. X--- include/unixconf.h    Sat Feb  2 16:52:38 1991
  468. X***************
  469. X*** 37,42 ****
  470. X--- 37,44 ----
  471. X  /* #define UNIXPC    /* use in addition to SYSV for AT&T 7300/3B1 */
  472. X              /* also note that the stock cpp qualifies as a
  473. X                 STUPID_CPP for config.h */
  474. X+ /* #define AIX_31    /* In AIX 3.1 (IBM RS/6000) use BSD ioctl's to gain
  475. X+                job control (note that AIX is SYSV otherwise) */
  476. X  
  477. X  /* #define PYRAMID_BUG     /* avoid a bug on the Pyramid */
  478. X  /* #define APOLLO    /* same for the Apollo */
  479. X***************
  480. X*** 148,157 ****
  481. X  /*
  482. X   * BSD/ULTRIX systems are normally the only ones that can suspend processes.
  483. X   * Suspending NetHack processes cleanly should be easy to add to other systems
  484. X!  * that have SIGTSTP.  Currently the only such system known to work is HPUX;
  485. X!  * other systems will probably require tweaks to unixtty.c and ioctl.c.
  486. X   */
  487. X! #if defined(BSD) || defined(ULTRIX) || defined (HPUX)
  488. X  #define    SUSPEND        /* let ^Z suspend the game */
  489. X  #endif
  490. X  
  491. X--- 150,160 ----
  492. X  /*
  493. X   * BSD/ULTRIX systems are normally the only ones that can suspend processes.
  494. X   * Suspending NetHack processes cleanly should be easy to add to other systems
  495. X!  * that have SIGTSTP.  Currently the only such systems known to work are HPUX
  496. X!  * and AIX 3.1; other systems will probably require tweaks to unixtty.c and
  497. X!  * ioctl.c.
  498. X   */
  499. X! #if defined(BSD) || defined(ULTRIX) || defined (HPUX) || defined(AIX_31)
  500. X  #define    SUSPEND        /* let ^Z suspend the game */
  501. X  #endif
  502. X  
  503. X*** include/vmsconf.h    Thu May 17 23:20:33 1990
  504. X--- include/vmsconf.h    Sat Feb  2 16:52:37 1991
  505. X***************
  506. X*** 42,66 ****
  507. X  # define WIZARD_NAME Local_WIZARD
  508. X  #endif
  509. X  
  510. X  #undef RECORD
  511. X! #define RECORD "record;1"
  512. X  
  513. X  #ifdef COMPRESS
  514. X  # undef COMPRESS
  515. X  #endif
  516. X! #ifdef ZEROCOMP
  517. X! # undef ZEROCOMP
  518. X  #endif
  519. X  
  520. X  /*
  521. X   * If you define MAIL, then the player will be notified of new broadcasts
  522. X   * when they arrive.
  523. X   */
  524. X! #define    MAIL
  525. X  
  526. X! #define RANDOM          /* use others/random.c instead of vaxcrtl rand/srand */
  527. X  
  528. X! #define    FCMASK    0660    /* file creation mask */
  529. X  
  530. X  /* vaxcrtl object library is not available on MicroVMS (4.4 thru 4.6(.7?))
  531. X     unless it's retreived from a full VMS system or leftover from a really
  532. X--- 42,81 ----
  533. X  # define WIZARD_NAME Local_WIZARD
  534. X  #endif
  535. X  
  536. X+ /* filenames require punctuation to avoid redirection via logical names */
  537. X  #undef RECORD
  538. X! #define RECORD    "record;1"    /* scoreboard file (retains high scores) */
  539. X! #undef LOGFILE
  540. X! #define LOGFILE    "logfile;0"    /* optional file (records all games) */
  541. X  
  542. X+ #define HLOCK    "perm;1"    /* an empty file used for locking purposes */
  543. X+ #define LLOCK    "perm.lock;1"    /* temporary link to previous */
  544. X+ 
  545. X+ /* want compression--for level & save files--performed within NetHack itself */
  546. X  #ifdef COMPRESS
  547. X  # undef COMPRESS
  548. X  #endif
  549. X! #ifndef ZEROCOMP
  550. X! # define ZEROCOMP
  551. X  #endif
  552. X  
  553. X  /*
  554. X+  * If nethack.exe will be installed with privilege so that the playground
  555. X+  * won't need to be left unprotected, define SECURE to suppress a couple
  556. X+  * of file protection fixups (protection of bones files and ownership of
  557. X+  * save files).
  558. X+  */
  559. X+ /* #define SECURE /**/
  560. X+ 
  561. X+ /*
  562. X   * If you define MAIL, then the player will be notified of new broadcasts
  563. X   * when they arrive.
  564. X   */
  565. X! #define MAIL
  566. X  
  567. X! #define RANDOM        /* use others/random.c instead of vaxcrtl rand/srand */
  568. X  
  569. X! #define FCMASK    0660    /* file creation mask */
  570. X  
  571. X  /* vaxcrtl object library is not available on MicroVMS (4.4 thru 4.6(.7?))
  572. X     unless it's retreived from a full VMS system or leftover from a really
  573. X***************
  574. X*** 95,104 ****
  575. X  #endif
  576. X  
  577. X  #include <time.h>
  578. X  #include <file.h>
  579. X! 
  580. X! #define    HLOCK    "perm;1"    /* an empty file used for locking purposes */
  581. X! #define LLOCK    "safelock;1"    /* link to previous */
  582. X  
  583. X  #ifndef REDO
  584. X  # define Getchar vms_getchar
  585. X--- 110,123 ----
  586. X  #endif
  587. X  
  588. X  #include <time.h>
  589. X+ #ifndef __GNUC__
  590. X  #include <file.h>
  591. X! #else    /* values needed from missing include file */
  592. X! # define O_RDONLY 0
  593. X! # define O_WRONLY 1
  594. X! # define O_RDWR   2
  595. X! # define O_CREAT 0x200
  596. X! #endif /* __GNUC__ */
  597. X  
  598. X  #ifndef REDO
  599. X  # define Getchar vms_getchar
  600. X*** mac/mac.c    Tue Jun 26 21:20:08 1990
  601. X--- mac/mac.c    Sat Jan  5 14:58:53 1991
  602. X***************
  603. X*** 81,91 ****
  604. X          if (! flags.wantspace) SetCursor(&ARROW_CURSOR);
  605. X      }
  606. X      /* initialize cursor blinking */
  607. X!     message = TickCount();
  608. X      cursRectInv = FALSE;
  609. X      while (!ch) {
  610. X          (void)WaitNextEvent(everyEvent, &theEvent, (fInFront) ? 0L : 50L, 0L);
  611. X!         if (theEvent.what == keyDown || theEvent.what == autoKey) {
  612. X              ch = 0;
  613. X              ObscureCursor();
  614. X              /* use raw key codes */
  615. X--- 81,91 ----
  616. X          if (! flags.wantspace) SetCursor(&ARROW_CURSOR);
  617. X      }
  618. X      /* initialize cursor blinking */
  619. X!     message = TickCount() + ((Invisible || (macflags & fMoveWRTMouse)) ? 0L : cursorTime);
  620. X      cursRectInv = FALSE;
  621. X      while (!ch) {
  622. X          (void)WaitNextEvent(everyEvent, &theEvent, (fInFront) ? 0L : 50L, 0L);
  623. X!         if ((theEvent.what == keyDown || theEvent.what == autoKey) && (FrontWindow() == HackWindow)) {
  624. X              ch = 0;
  625. X              ObscureCursor();
  626. X              /* use raw key codes */
  627. X***************
  628. X*** 228,233 ****
  629. X--- 228,237 ----
  630. X                      case kSuspendResumeMessage:
  631. X                          if (!SuspResIsResume(theEvent.message)) {
  632. X                          /* ---------- SUSPEND EVENT ------------ */
  633. X+                             if (cursRectInv) {
  634. X+                                 InvertRect(&cursorRect);
  635. X+                                 cursRectInv = FALSE;
  636. X+                             }
  637. X                              fInFront = FALSE;
  638. X                              if (macflags & fZoomOnContextSwitch
  639. X                                  && !EmptyRect(&(**(HackWindow)->visRgn).rgnBBox))
  640. X***************
  641. X*** 264,271 ****
  642. X          
  643. X              case updateEvt:
  644. X                  if (HackWindow == (WindowPtr)theEvent.message) {
  645. X                      doUpdate(t);
  646. X-                     if (cursRectInv) InvertRect(&cursorRect);    /* restore cursor */
  647. X                  }
  648. X                  break;
  649. X                  
  650. X--- 268,276 ----
  651. X          
  652. X              case updateEvt:
  653. X                  if (HackWindow == (WindowPtr)theEvent.message) {
  654. X+                     if (cursRectInv) InvertRect(&cursorRect);    /* clear cursor */
  655. X+                     cursRectInv = FALSE;
  656. X                      doUpdate(t);
  657. X                  }
  658. X                  break;
  659. X                  
  660. X***************
  661. X*** 299,304 ****
  662. X--- 304,313 ----
  663. X                  break;
  664. X                  
  665. X              case mouseDown:
  666. X+                 if (cursRectInv) {
  667. X+                     InvertRect(&cursorRect);
  668. X+                     cursRectInv = FALSE;
  669. X+                 }
  670. X                  ch = mButtonDown(theEvent, t, &nextCommand);
  671. X  #ifdef THINK_C
  672. X                  repDelay = KeyThresh;
  673. X*** mac/macinit.c    Mon May 21 22:21:10 1990
  674. X--- mac/macinit.c    Thu Jan 31 11:24:36 1991
  675. X***************
  676. X*** 239,248 ****
  677. X--- 239,263 ----
  678. X      t->curHilite = 0;
  679. X      t->curAttr = 0;
  680. X  
  681. X+ #define all4Mods    (cmdKey | shiftKey | optionKey | controlKey)
  682. X+ #define nKeyCmd        (all4Mods - cmdKey)
  683. X+ #define nKeyShf        (all4Mods - shiftKey)
  684. X+ #define nKeyOpt        (all4Mods - optionKey)
  685. X+ #define nKeyCtl        (all4Mods - controlKey)
  686. X      /* give time for Multifinder to bring NetHack window to front */
  687. X+     /* check to see if this is a "wiz bang" start */
  688. X      for(tempFont = 0; tempFont<10; tempFont++) {
  689. X+         int    theMod;
  690. X+ 
  691. X          SystemTask();
  692. X          (void)GetNextEvent(nullEvent,&theEvent);
  693. X+ 
  694. X+         theMod = theEvent.modifiers & all4Mods;
  695. X+         if ((theMod == nKeyCmd) || (theMod == nKeyShf) ||
  696. X+             (theMod == nKeyOpt) || (theMod == nKeyCtl)) {
  697. X+             Strcpy(plname, "wizard");
  698. X+ /*            SysBeep(1);    /* useful only for debugging */
  699. X+         }
  700. X      }
  701. X  
  702. X      HackWindow = NewWindow(0L, &boundsRect, "\016NetHack [MOVE]",
  703. X***************
  704. X*** 416,421 ****
  705. X--- 431,437 ----
  706. X      int fd;
  707. X      short temp_flags;
  708. X      term_info    *t;
  709. X+     boolean        saveWizard, newPrefs = FALSE;
  710. X  
  711. X      t = (term_info *)GetWRefCon(HackWindow);
  712. X      SetVol(0L, t->system.sysVRefNum);
  713. X***************
  714. X*** 430,436 ****
  715. X--- 446,455 ----
  716. X              tmp = CtoPstr(OPTIONS);
  717. X              result = Create((StringPtr)tmp, (short)0, CREATOR, AUXIL_TYPE);
  718. X               if (result == noErr)
  719. X+             {
  720. X                   fd = open(OPTIONS, O_WRONLY | O_BINARY);
  721. X+                 newPrefs = TRUE;
  722. X+             }
  723. X          }
  724. X       }
  725. X  
  726. X***************
  727. X*** 437,442 ****
  728. X--- 456,469 ----
  729. X      if (fd < 0)
  730. X          pline("can't create options file!");
  731. X      else {
  732. X+         /* if we initially store TRUE for wizard then
  733. X+          * the user will have intrinsic wizardry!
  734. X+          */
  735. X+         if (newPrefs) {
  736. X+             saveWizard = wizard;
  737. X+             wizard = FALSE;
  738. X+         }
  739. X+ 
  740. X          write(fd, &flags, sizeof(flags));
  741. X      
  742. X          write(fd, plname, PL_NSIZ);
  743. X***************
  744. X*** 455,460 ****
  745. X--- 482,489 ----
  746. X  #endif
  747. X          write(fd, inv_order, strlen(inv_order)+1);
  748. X          close(fd);
  749. X+ 
  750. X+         if (newPrefs) wizard = saveWizard;
  751. X      }
  752. X      
  753. X      SetVol(0L, t->recordVRefNum);
  754. X*** others/Makefile.ovl    Tue Jun 26 21:20:10 1990
  755. X--- others/Makefile.ovl    Mon Feb  4 16:19:03 1991
  756. X***************
  757. X*** 1,4 ****
  758. X! #    SCCS Id: @(#)Makefile.ovl    3.0    90/06/03
  759. X  #    PC NetHack 3.0 Makefile for Microsoft(tm) "C" 5.1 -- Pierre Martineau
  760. X  #    Overlay Arrangement -- Stephen Spackman, Pierre Martineau, Norm Meluch
  761. X  #    Multiple Compilation Hack and so forth -- Stephen Spackman
  762. X--- 1,4 ----
  763. X! #    SCCS Id: @(#)Makefile.ovl    3.0    90/01/29
  764. X  #    PC NetHack 3.0 Makefile for Microsoft(tm) "C" 5.1 -- Pierre Martineau
  765. X  #    Overlay Arrangement -- Stephen Spackman, Pierre Martineau, Norm Meluch
  766. X  #    Multiple Compilation Hack and so forth -- Stephen Spackman
  767. X***************
  768. X*** 32,38 ****
  769. X  ASM     = masm
  770. X  EXEPATCH = exesmurf
  771. X  # $(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.
  772. X! MAKEBIN = make
  773. X  # For those of us who have these on PC.
  774. X  # YACC     = yacc
  775. X  # LEX     = lex
  776. X--- 32,38 ----
  777. X  ASM     = masm
  778. X  EXEPATCH = exesmurf
  779. X  # $(MAKE) macro is often predefined, so we use $(MAKEBIN) instead.
  780. X! MAKEBIN = ndmake45l
  781. X  # For those of us who have these on PC.
  782. X  # YACC     = yacc
  783. X  # LEX     = lex
  784. X***************
  785. X*** 57,69 ****
  786. X  #    /Di386    = Use 386 specific enhancements
  787. X  #    /DNOEMS = Do not use EMS memory
  788. X  #    /DDEBUG = Report memory usage on startup
  789. X  AFLAGS    = /MX
  790. X  #
  791. X- ###############################################################################
  792. X- # Use the first line if you are using EXESMURF or the second for EXEMOD.
  793. X  EXEFLAGS = /max4500 /min4500
  794. X- # EXEFLAGS = /max 1194 /min 1194
  795. X- ###############################################################################
  796. X  #
  797. X  # *****************************************************************************
  798. X  # ********* Directories (makedefs hardcodes these, don't change them) *********
  799. X--- 57,66 ----
  800. X  #    /Di386    = Use 386 specific enhancements
  801. X  #    /DNOEMS = Do not use EMS memory
  802. X  #    /DDEBUG = Report memory usage on startup
  803. X+ #    /DNOSPLIT = EXE file is not split out to OVL files
  804. X  AFLAGS    = /MX
  805. X  #
  806. X  EXEFLAGS = /max4500 /min4500
  807. X  #
  808. X  # *****************************************************************************
  809. X  # ********* Directories (makedefs hardcodes these, don't change them) *********
  810. X***************
  811. X*** 82,88 ****
  812. X  # The game name
  813. X  GAME     = NetHack
  814. X  #
  815. X! # The default make target (so just typing 'make' is useful)
  816. X  DEFAULT  : $(GAME)
  817. X  #
  818. X  # The game directory
  819. X--- 79,85 ----
  820. X  # The game name
  821. X  GAME     = NetHack
  822. X  #
  823. X! # The default make target (so just typing 'ndmake45l' is useful)
  824. X  DEFAULT  : $(GAME)
  825. X  #
  826. X  # The game directory
  827. X***************
  828. X*** 137,229 ****
  829. X      $(OBJ)\objects.o $(OBJ)\invent.0 $(OBJ)\mkobj.0 $(OBJ)\mkroom.0 \
  830. X      $(OBJ)\rnd.0 $(OBJ)\termcap.0
  831. X  # main monster code
  832. X! OVL01 = $(OBJ)\cmd.0 $(OBJ)\dbridge.0 $(OBJ)\dog.0 $(OBJ)\engrave.0-1 \
  833. X      $(OBJ)\hack.0 $(OBJ)\mon.0-1 $(OBJ)\mondata.0-1 $(OBJ)\monmove.0-1 \
  834. X      $(OBJ)\mthrowu.0 $(OBJ)\priest.0 $(OBJ)\shk.0 $(OBJ)\track.0 \
  835. X      $(OBJ)\trap.0-1 $(OBJ)\were.0
  836. X- # pet code
  837. X- OVL02 = $(OBJ)\apply.0 $(OBJ)\dog.1 $(OBJ)\dogmove.o
  838. X  # advanced monsters
  839. X! OVL03 = $(OBJ)\demon.o $(OBJ)\mcastu.o
  840. X! OVL04 = $(OBJ)\priest.1-b
  841. X! OVL05 = $(OBJ)\shk.1-b
  842. X! OVL06 = $(OBJ)\were.1-b
  843. X! OVL07 = $(OBJ)\wizard.1-b
  844. X! OVL08 = $(OBJ)\worm.o
  845. X  # main people things: you take your turn
  846. X! OVL09 = $(OBJ)\allmain.0 $(OBJ)\artifact.0 $(OBJ)\attrib.1 $(OBJ)\cmd.1 \
  847. X      $(OBJ)\do.1 $(OBJ)\do.3 $(OBJ)\eat.0 $(OBJ)\engrave.2 \
  848. X      $(OBJ)\getline.0-1 $(OBJ)\hack.1 $(OBJ)\lock.0 $(OBJ)\mail.0 \
  849. X      $(OBJ)\pickup.1 $(OBJ)\pri.1 $(OBJ)\prisym.1 $(OBJ)\sounds.0 \
  850. X      $(OBJ)\timeout.0 $(OBJ)\track.1 $(OBJ)\vault.0 $(OBJ)\wizard.0
  851. X! OVL10 = $(OBJ)\attrib.0
  852. X! OVL11 = $(OBJ)\attrib.2-b $(OBJ)\exper.o
  853. X! OVL12 = $(OBJ)\artifact.2 $(OBJ)\eat.1 $(OBJ)\invent.1
  854. X! OVL13 = $(OBJ)\makemon.0-2 $(OBJ)\mkobj.1
  855. X! OVL14 = $(OBJ)\makemon.b
  856. X! OVL15 = $(OBJ)\mkobj.2-b
  857. X! OVL16 = $(OBJ)\hack.2
  858. X! OVL17 = $(OBJ)\mhitm.1-b
  859. X! OVL18 = $(OBJ)\mthrowu.1
  860. X! OVL19 = $(OBJ)\mthrowu.2-b
  861. X! OVL20 = $(OBJ)\allmain.1 $(OBJ)\mhitm.0 $(OBJ)\mhitu.0-1 $(OBJ)\rnd.1 \
  862. X!     $(OBJ)\weapon.0-1
  863. X! OVL21 = $(OBJ)\mon.2-b $(OBJ)\trap.2
  864. X! OVL22 = $(OBJ)\artifact.1 $(OBJ)\search.0 $(OBJ)\uhitm.o $(OBJ)\weapon.2-b
  865. X! OVL23 = $(OBJ)\do_wear.0-1 $(OBJ)\mhitu.2-b
  866. X! OVL24 = $(OBJ)\steal.0-1
  867. X! OVL25 = $(OBJ)\monmove.2-b $(OBJ)\steal.2-b
  868. X! OVL26 = $(OBJ)\rnd.2-b
  869. X! OVL27 = $(OBJ)\do_wear.2 $(OBJ)\getline.b $(OBJ)\mondata.2 $(OBJ)\objnam.0-1 \
  870. X!     $(OBJ)\pager.0 $(OBJ)\polyself.0-1
  871. X! OVL28 = $(OBJ)\do_name.0
  872. X! OVL29 = $(OBJ)\objnam.2-b
  873. X! OVL30 = $(OBJ)\pager.1-b
  874. X! OVL31 = $(OBJ)\pri.0 $(OBJ)\prisym.0 $(OBJ)\topl.0
  875. X! OVL32 = $(OBJ)\pri.b $(OBJ)\topl.1-2
  876. X! OVL33 = $(OBJ)\prisym.2
  877. X! OVL34 = $(OBJ)\prisym.b
  878. X! OVL35 = $(OBJ)\topl.b
  879. X! OVL36 = $(OBJ)\termcap.1 $(OBJ)\unix.0
  880. X! OVL37 = $(OBJ)\termcap.2-b
  881. X! OVL38 = $(OBJ)\dog.b $(OBJ)\sounds.1-b
  882. X! OVL39 = $(OBJ)\read.0
  883. X! OVL40 = $(OBJ)\invent.b
  884. X! OVL41 = $(OBJ)\hack.b
  885. X! OVL42 = $(OBJ)\mondata.b $(OBJ)\timeout.1-b
  886. X! OVL43 = $(OBJ)\do.0 $(OBJ)\invent.3
  887. X! OVL44 = $(OBJ)\cmd.2-b $(OBJ)\getline.2 $(OBJ)\write.o
  888. X! OVL45 = $(OBJ)\apply.2-b
  889. X! OVL46 = $(OBJ)\do.b
  890. X! OVL47 = $(OBJ)\dokick.o
  891. X! OVL48 = $(OBJ)\dothrow.o
  892. X! OVL49 = $(OBJ)\eat.2-b
  893. X! OVL50 = $(OBJ)\invent.2 $(OBJ)\pickup.0 $(OBJ)\pickup.2-b
  894. X! OVL51 = $(OBJ)\lock.1-b
  895. X  OVL52 = $(OBJ)\polyself.2-b
  896. X! OVL53 = $(OBJ)\potion.o
  897. X! OVL54 = $(OBJ)\pray.o
  898. X! OVL55 = $(OBJ)\read.1-b $(OBJ)\spell.o
  899. X! OVL56 = $(OBJ)\search.1-b
  900. X  # clothing stuff
  901. X! OVL57 = $(OBJ)\do_wear.b $(OBJ)\wield.o $(OBJ)\worn.o
  902. X  # Zappage
  903. X! OVL58 = $(OBJ)\pri.2 $(OBJ)\zap.o
  904. X! OVL59 = $(OBJ)\dbridge.1-b
  905. X! OVL60 = $(OBJ)\trap.b
  906. X  # Unusual circumstances
  907. X  OVL61 = $(OBJ)\artifact.b $(OBJ)\do_name.1-b $(OBJ)\fountain.o $(OBJ)\music.o \
  908. X      $(OBJ)\rumors.o $(OBJ)\shknam.0 $(OBJ)\sit.o $(OBJ)\vault.1-b
  909. X  # Uppers and Downers
  910. X! # Note: version.o is in OVL62, but in a special way.  See below.
  911. X! OVL62 = $(OBJ)\allmain.2-b $(OBJ)\end.o $(OBJ)\engrave.b $(OBJ)\mail.1-b \
  912. X      $(OBJ)\o_init.o $(OBJ)\options.o $(OBJ)\restore.o $(OBJ)\rip.o \
  913. X      $(OBJ)\save.o $(OBJ)\shknam.1-b $(OBJ)\topten.o $(OBJ)\tty.o \
  914. X      $(OBJ)\u_init.o $(OBJ)\unix.1-b
  915. X- # Levelling
  916. X- OVL63 = $(OBJ)\apply.1 $(OBJ)\bones.o $(OBJ)\do.2 $(OBJ)\dog.2 \
  917. X-     $(OBJ)\extralev.o $(OBJ)\mklev.o $(OBJ)\mkmaze.o $(OBJ)\mkroom.1-b \
  918. X-     $(OBJ)\sp_lev.o $(OBJ)\track.2-b
  919. X  
  920. X  
  921. X  # *****************************************************************************
  922. X--- 134,226 ----
  923. X      $(OBJ)\objects.o $(OBJ)\invent.0 $(OBJ)\mkobj.0 $(OBJ)\mkroom.0 \
  924. X      $(OBJ)\rnd.0 $(OBJ)\termcap.0
  925. X  # main monster code
  926. X! OVL01 = $(OBJ)\attrib.0
  927. X! OVL02 = $(OBJ)\prisym.b
  928. X! OVL03 = $(OBJ)\read.0
  929. X! OVL04 = $(OBJ)\rnd.2-b
  930. X! OVL05 = $(OBJ)\steal.0-1
  931. X! OVL06 = $(OBJ)\prisym.2
  932. X! OVL07 = $(OBJ)\termcap.1 $(OBJ)\unix.0
  933. X! OVL08 = $(OBJ)\were.1-b
  934. X! OVL09 = $(OBJ)\do_name.0
  935. X! OVL10 = $(OBJ)\mthrowu.2-b
  936. X! OVL11 = $(OBJ)\topl.b
  937. X! OVL12 = $(OBJ)\hack.b
  938. X! OVL13 = $(OBJ)\makemon.b
  939. X! OVL14 = $(OBJ)\mondata.b $(OBJ)\timeout.1-b
  940. X! OVL15 = $(OBJ)\wizard.1-b
  941. X! OVL16 = $(OBJ)\do.b
  942. X! OVL17 = $(OBJ)\do.0 $(OBJ)\invent.3
  943. X! OVL18 = $(OBJ)\worm.o
  944. X! OVL19 = $(OBJ)\pri.b $(OBJ)\topl.1-2
  945. X! OVL20 = $(OBJ)\mkobj.2-b
  946. X! OVL21 = $(OBJ)\termcap.2-b
  947. X! OVL22 = $(OBJ)\mthrowu.1
  948. X! OVL23 = $(OBJ)\attrib.2-b $(OBJ)\exper.o
  949. X! OVL24 = $(OBJ)\monmove.2-b $(OBJ)\steal.2-b
  950. X! OVL25 = $(OBJ)\hack.2
  951. X! OVL26 = $(OBJ)\demon.o $(OBJ)\mcastu.o
  952. X! OVL27 = $(OBJ)\dothrow.o
  953. X! OVL28 = $(OBJ)\cmd.2-b $(OBJ)\getline.2 $(OBJ)\write.o
  954. X! OVL29 = $(OBJ)\artifact.2 $(OBJ)\eat.1 $(OBJ)\invent.1
  955. X! OVL30 = $(OBJ)\dog.b $(OBJ)\sounds.1-b
  956. X! OVL31 = $(OBJ)\priest.1-b
  957. X! # pet code
  958. X! OVL32 = $(OBJ)\apply.0 $(OBJ)\dog.1 $(OBJ)\dogmove.o
  959. X! OVL33 = $(OBJ)\invent.b
  960. X! OVL34 = $(OBJ)\pager.1-b
  961. X! OVL35 = $(OBJ)\mhitm.1-b
  962. X! OVL36 = $(OBJ)\objnam.2-b
  963. X! OVL37 = $(OBJ)\pri.0 $(OBJ)\prisym.0 $(OBJ)\topl.0
  964. X! OVL38 = $(OBJ)\dokick.o
  965. X! OVL39 = $(OBJ)\do_wear.2 $(OBJ)\getline.b $(OBJ)\mondata.2 $(OBJ)\objnam.0-1 \
  966. X!     $(OBJ)\pager.0 $(OBJ)\polyself.0-1
  967. X! OVL40 = $(OBJ)\makemon.0-2 $(OBJ)\mkobj.1
  968. X! OVL41 = $(OBJ)\mon.2-b $(OBJ)\trap.2
  969. X! OVL42 = $(OBJ)\do_wear.0-1 $(OBJ)\mhitu.2-b
  970. X! OVL43 = $(OBJ)\allmain.1 $(OBJ)\mhitm.0 $(OBJ)\mhitu.0-1 $(OBJ)\rnd.1 \
  971. X!     $(OBJ)\weapon.0-1
  972. X! OVL44 = $(OBJ)\apply.2-b
  973. X! OVL45 = $(OBJ)\artifact.1 $(OBJ)\search.0 $(OBJ)\uhitm.o $(OBJ)\weapon.2-b
  974. X! OVL46 = $(OBJ)\cmd.0 $(OBJ)\dbridge.0 $(OBJ)\dog.0 $(OBJ)\engrave.0-1 \
  975. X      $(OBJ)\hack.0 $(OBJ)\mon.0-1 $(OBJ)\mondata.0-1 $(OBJ)\monmove.0-1 \
  976. X      $(OBJ)\mthrowu.0 $(OBJ)\priest.0 $(OBJ)\shk.0 $(OBJ)\track.0 \
  977. X      $(OBJ)\trap.0-1 $(OBJ)\were.0
  978. X  # advanced monsters
  979. X! OVL47 = $(OBJ)\shk.1-b
  980. X  # main people things: you take your turn
  981. X! OVL48 = $(OBJ)\allmain.0 $(OBJ)\artifact.0 $(OBJ)\attrib.1 $(OBJ)\cmd.1 \
  982. X      $(OBJ)\do.1 $(OBJ)\do.3 $(OBJ)\eat.0 $(OBJ)\engrave.2 \
  983. X      $(OBJ)\getline.0-1 $(OBJ)\hack.1 $(OBJ)\lock.0 $(OBJ)\mail.0 \
  984. X      $(OBJ)\pickup.1 $(OBJ)\pri.1 $(OBJ)\prisym.1 $(OBJ)\sounds.0 \
  985. X      $(OBJ)\timeout.0 $(OBJ)\track.1 $(OBJ)\vault.0 $(OBJ)\wizard.0
  986. X! OVL49 = $(OBJ)\search.1-b
  987. X! OVL50 = $(OBJ)\lock.1-b
  988. X! OVL51 = $(OBJ)\dbridge.1-b
  989. X  OVL52 = $(OBJ)\polyself.2-b
  990. X! OVL53 = $(OBJ)\invent.2 $(OBJ)\pickup.0 $(OBJ)\pickup.2-b
  991. X! OVL54 = $(OBJ)\eat.2-b
  992. X! OVL55 = $(OBJ)\pray.o
  993. X! OVL56 = $(OBJ)\potion.o
  994. X! OVL57 = $(OBJ)\trap.b
  995. X! OVL58 = $(OBJ)\read.1-b $(OBJ)\spell.o
  996. X  # clothing stuff
  997. X! OVL59 = $(OBJ)\do_wear.b $(OBJ)\wield.o $(OBJ)\worn.o
  998. X  # Zappage
  999. X! OVL60 = $(OBJ)\pri.2 $(OBJ)\zap.o
  1000. X  # Unusual circumstances
  1001. X  OVL61 = $(OBJ)\artifact.b $(OBJ)\do_name.1-b $(OBJ)\fountain.o $(OBJ)\music.o \
  1002. X      $(OBJ)\rumors.o $(OBJ)\shknam.0 $(OBJ)\sit.o $(OBJ)\vault.1-b
  1003. X+ # Levelling
  1004. X+ OVL62 = $(OBJ)\apply.1 $(OBJ)\bones.o $(OBJ)\do.2 $(OBJ)\dog.2 \
  1005. X+     $(OBJ)\extralev.o $(OBJ)\mklev.o $(OBJ)\mkmaze.o $(OBJ)\mkroom.1-b \
  1006. X+     $(OBJ)\sp_lev.o $(OBJ)\track.2-b
  1007. X  # Uppers and Downers
  1008. X! # Note: version.o is in OVL63, but in a special way.  See below.
  1009. X! OVL63 = $(OBJ)\allmain.2-b $(OBJ)\end.o $(OBJ)\engrave.b $(OBJ)\mail.1-b \
  1010. X      $(OBJ)\o_init.o $(OBJ)\options.o $(OBJ)\restore.o $(OBJ)\rip.o \
  1011. X      $(OBJ)\save.o $(OBJ)\shknam.1-b $(OBJ)\topten.o $(OBJ)\tty.o \
  1012. X      $(OBJ)\u_init.o $(OBJ)\unix.1-b
  1013. X  
  1014. X  
  1015. X  # *****************************************************************************
  1016. X***************
  1017. X*** 257,263 ****
  1018. X         ($(OVL43)) ($(OVL44)) ($(OVL45)) ($(OVL46)) ($(OVL47)) ($(OVL48)) \
  1019. X         ($(OVL49)) ($(OVL50)) ($(OVL51)) ($(OVL52)) ($(OVL53)) ($(OVL54)) \
  1020. X         ($(OVL55)) ($(OVL56)) ($(OVL57)) ($(OVL58)) ($(OVL59)) ($(OVL60)) \
  1021. X!        ($(OVL61)) ($(OVL62)      $(OBJ)\version.o) ($(OVL63))
  1022. X  
  1023. X  # object files for special levels compiler
  1024. X  SPLEVOBJS   =    $(OBJ)\lev_comp.o $(OBJ)\lev_lex.o  $(OBJ)\lev_main.o \
  1025. X--- 254,260 ----
  1026. X         ($(OVL43)) ($(OVL44)) ($(OVL45)) ($(OVL46)) ($(OVL47)) ($(OVL48)) \
  1027. X         ($(OVL49)) ($(OVL50)) ($(OVL51)) ($(OVL52)) ($(OVL53)) ($(OVL54)) \
  1028. X         ($(OVL55)) ($(OVL56)) ($(OVL57)) ($(OVL58)) ($(OVL59)) ($(OVL60)) \
  1029. X!        ($(OVL61)) ($(OVL62)) ($(OBJ)\version.o      $(OVL63))
  1030. X  
  1031. X  # object files for special levels compiler
  1032. X  SPLEVOBJS   =    $(OBJ)\lev_comp.o $(OBJ)\lev_lex.o  $(OBJ)\lev_main.o \
  1033. X***************
  1034. X*** 329,338 ****
  1035. X  
  1036. X  $(GAME).exe: $(GAMEFILE)
  1037. X  
  1038. X! $(GAMEFILE): $(OBJ) $(HOBJ)
  1039. X      @echo Loading....
  1040. X      $(LINK) $(ROOT) $(OVERLAYS),$(GAMEFILE),$(GAME),$(CLIB) $(TERMLIB) $(LFLAGS) ;
  1041. X      $(EXEPATCH) $(GAMEFILE) $(EXEFLAGS)
  1042. X      @echo NetHack is up to date.
  1043. X  
  1044. X  $(OBJ):
  1045. X--- 326,336 ----
  1046. X  
  1047. X  $(GAME).exe: $(GAMEFILE)
  1048. X  
  1049. X! $(GAMEFILE): $(EXEPATCH) $(OBJ) $(HOBJ)
  1050. X      @echo Loading....
  1051. X      $(LINK) $(ROOT) $(OVERLAYS),$(GAMEFILE),$(GAME),$(CLIB) $(TERMLIB) $(LFLAGS) ;
  1052. X      $(EXEPATCH) $(GAMEFILE) $(EXEFLAGS)
  1053. X+     $(EXEPATCH) $(GAMEFILE) 1 49
  1054. X      @echo NetHack is up to date.
  1055. X  
  1056. X  $(OBJ):
  1057. X***************
  1058. X*** 392,397 ****
  1059. X--- 390,403 ----
  1060. X  
  1061. X  lev_comp.exe:    $(SPLEVOBJS)
  1062. X      $(LINK) $(LFLAGS) $(SPLEVOBJS),lev_comp.exe,, $(CLIB);
  1063. X+ 
  1064. X+ $(EXEPATCH): $(EXEPATCH).exe
  1065. X+ 
  1066. X+ $(EXEPATCH).exe: $(OBJ)\$(EXEPATCH).o
  1067. X+     $(LINK) $(OBJ)\$*.o,$*.exe;
  1068. X+ 
  1069. X+ $(OBJ)\$(EXEPATCH).o: $(EXEPATCH).c
  1070. X+     $(CC) /W0 /Fo$(OBJ)\$*.o $*.c
  1071. X  
  1072. X  # *****************************************************************************
  1073. X  # *************************  Makedefs Stuff ***********************************
  1074. X*** vms/install.com    Thu May 24 00:44:05 1990
  1075. X--- vms/install.com    Sat Jan  5 15:06:11 1991
  1076. X***************
  1077. X*** 14,19 ****
  1078. X--- 14,20 ----
  1079. X  $    play_files = "PERM.,RECORD.,LOGFILE."
  1080. X  $    help_files = "HELP.,HH.,CMDHELP.,HISTORY.,OPTHELP.,ORACLES.,LICENSE."
  1081. X  $    data_files = "DATA.,RUMORS."
  1082. X+ $    trmcp_file = "[.others]termcap"
  1083. X  $    spec_files = "ENDGAME.,CASTLE.,TOWER%."
  1084. X  $    spec_input = "endgame.des castle.des tower.des"
  1085. X  $ makedefs := $sys$disk:[-.src]makedefs
  1086. X***************
  1087. X*** 25,43 ****
  1088. X  $    set default [-.auxil]    !move to auxiliary directory
  1089. X  $ makedefs -d    !data
  1090. X  $ makedefs -r    !rumors
  1091. X! $! lev_comp 'spec_input' !special levels
  1092. X! $! (flex'd version doesn't handle multiple inputs, so do them one at a time)
  1093. X! $ lev_comp endgame.des
  1094. X! $ lev_comp castle.des
  1095. X! $ lev_comp tower.des
  1096. X  $    set default [-]        !move up
  1097. X  $
  1098. X! $! set up the directories
  1099. X! $ create/directory/owner='gameuic'/prot=(s:rwe,o:rwe,g:rwe,w:rwe)/log -
  1100. X!     'f$string(gamedir - "]" + ".SAVE]")'
  1101. X! $! create empty writeable files
  1102. X  $ create/owner='gameuic'/prot=(s:rwed,o:rwed,g:rwed,w:rwed) -
  1103. X      'gamedir''play_files'
  1104. X  $! copy over the remaining game files, then make them readonly
  1105. X  $ copy/prot=(s:rwed,o:rwed,g:re,w:re) -
  1106. X      [.auxil]'help_files','data_files','spec_files',[.src]nethack.exe -
  1107. X--- 26,50 ----
  1108. X  $    set default [-.auxil]    !move to auxiliary directory
  1109. X  $ makedefs -d    !data
  1110. X  $ makedefs -r    !rumors
  1111. X! $ lev_comp 'spec_input' !special levels
  1112. X  $    set default [-]        !move up
  1113. X  $
  1114. X! $!
  1115. X! $! set up the playground and save directories
  1116. X! $    srctree = f$environment("DEFAULT")
  1117. X! $    set default 'gamedir'
  1118. X! $ if f$parse("[-]").eqs."" then  create/dir/log [-] !default owner & protection
  1119. X! $ if f$parse("[]" ).eqs."" then - !needs to be world writable
  1120. X!    create/directory/owner='gameuic'/prot=(s:rwe,o:rwe,g:rwe,w:rwe)/log []
  1121. X! $ if f$search("SAVE.DIR;1").eqs."" then -
  1122. X!    create/directory/owner='gameuic'/prot=(s:rwe,o:rwe,g:rwe,w:rwe)/log -
  1123. X!     [.SAVE]/version_limit=2
  1124. X! $    set default 'srctree'
  1125. X! $!
  1126. X! $! create empty writeable files -- logfile, scoreboard, multi-user access lock
  1127. X  $ create/owner='gameuic'/prot=(s:rwed,o:rwed,g:rwed,w:rwed) -
  1128. X      'gamedir''play_files'
  1129. X+ $!
  1130. X  $! copy over the remaining game files, then make them readonly
  1131. X  $ copy/prot=(s:rwed,o:rwed,g:re,w:re) -
  1132. X      [.auxil]'help_files','data_files','spec_files',[.src]nethack.exe -
  1133. X***************
  1134. X*** 44,49 ****
  1135. X--- 51,63 ----
  1136. X      'gamedir'*.*
  1137. X  $ set file/owner='gameuic'/prot=(s:re,o:re) -
  1138. X      'gamedir''help_files','data_files','spec_files',nethack.exe
  1139. X+ $!
  1140. X+ $! provide last-resort termcap file (if available)
  1141. X+ $ if f$search(trmcp_file).eqs."" then  goto skip_termcap
  1142. X+ $  copy/prot=(s:rwed,o:rwed,g:re,w:re) 'trmcp_file' 'gamedir'termcap
  1143. X+ $  set file/owner='gameuic'/prot=(s:re,o:re) 'gamedir'termcap
  1144. X+ $skip_termcap:
  1145. X+ $!
  1146. X  $! done
  1147. X  $ define/nolog hackdir 'gamedir'
  1148. X  $ write sys$output -
  1149. X*** vms/lev_lex.h    Tue Jun 26 21:20:41 1990
  1150. X--- vms/lev_lex.h    Thu Jan 31 13:46:10 1991
  1151. X***************
  1152. X*** 5,13 ****
  1153. X   * src/lev_main.c, where stdin & stdout are still correctly defined.
  1154. X   */
  1155. X  #ifdef VAXC
  1156. X! # module lev_lex "3.0.9"
  1157. X  #endif
  1158. X  
  1159. X  #include <stdio.h>
  1160. X  #define stdin  0
  1161. X  #define stdout 0
  1162. X--- 5,19 ----
  1163. X   * src/lev_main.c, where stdin & stdout are still correctly defined.
  1164. X   */
  1165. X  #ifdef VAXC
  1166. X! # module lev_lex "3.0.10"
  1167. X  #endif
  1168. X  
  1169. X  #include <stdio.h>
  1170. X+ #ifdef stdin
  1171. X+ # undef stdin
  1172. X+ #endif
  1173. X  #define stdin  0
  1174. X+ #ifdef stdout
  1175. X+ # undef stdout
  1176. X+ #endif
  1177. X  #define stdout 0
  1178. X*** vms/vmsbuild.com    Tue Feb  5 22:14:41 1991
  1179. X--- vms/vmsbuild.com    Tue Feb  5 22:15:48 1991
  1180. X***************
  1181. X*** 1,4 ****
  1182. X! $ ! vms/vmsbuild.com -- compile and link NetHack 3.0 patchlevel 9    [pr]
  1183. X  $ !
  1184. X  $ ! usage:
  1185. X  $ !   $ set default [.src]    !or [-.src] if starting from [.vms]
  1186. X--- 1,4 ----
  1187. X! $ ! vms/vmsbuild.com -- compile and link NetHack 3.0 patchlevel 10    [pr]
  1188. X  $ !
  1189. X  $ ! usage:
  1190. X  $ !   $ set default [.src]    !or [-.src] if starting from [.vms]
  1191. X***************
  1192. X*** 17,23 ****
  1193. X  $ !    Default wizard definition moved to include/vmsconf.h.
  1194. X  $
  1195. X  $    vaxc_ = "CC/NOLIST/OPTIMIZE=NOINLINE"        !vaxc v3.x (2.x fixed below)
  1196. X! $    gnuc_ = "GCC/CC1=""-fwritable-strings"""
  1197. X  $    gnulib = "gnu_cc:[000000]gcclib/Library"    !(not used w/ vaxc)
  1198. X  $ ! common CC options (/obj=file doesn't work for GCC 1.36, use rename instead)
  1199. X  $    c_c_  = "/INCLUDE=[-.INCLUDE]"    !/DEFINE=(""WIZARD=""""GENTZEL"""""")
  1200. X--- 17,23 ----
  1201. X  $ !    Default wizard definition moved to include/vmsconf.h.
  1202. X  $
  1203. X  $    vaxc_ = "CC/NOLIST/OPTIMIZE=NOINLINE"        !vaxc v3.x (2.x fixed below)
  1204. X! $    gnuc_ = "GCC"
  1205. X  $    gnulib = "gnu_cc:[000000]gcclib/Library"    !(not used w/ vaxc)
  1206. X  $ ! common CC options (/obj=file doesn't work for GCC 1.36, use rename instead)
  1207. X  $    c_c_  = "/INCLUDE=[-.INCLUDE]"    !/DEFINE=(""WIZARD=""""GENTZEL"""""")
  1208. X***************
  1209. X*** 113,119 ****
  1210. X  $ milestone "<compiling...>"
  1211. X  $ cc [-.vms]vmsmisc    !try simplest one first
  1212. X  $ cc alloc.c
  1213. X! $ if f$search("monst.c").eqs."" then  copy/Concat monst.c1+.c2 *.c
  1214. X  $ cc monst.c
  1215. X  $ milestone " (monst)"
  1216. X  $ cc objects.c
  1217. X--- 113,119 ----
  1218. X  $ milestone "<compiling...>"
  1219. X  $ cc [-.vms]vmsmisc    !try simplest one first
  1220. X  $ cc alloc.c
  1221. X! $ if f$search("monst.c").eqs."" then  copy/Concat monst.c1+.c2 monst.c
  1222. X  $ cc monst.c
  1223. X  $ milestone " (monst)"
  1224. X  $ cc objects.c
  1225. X***************
  1226. X*** 121,127 ****
  1227. X  $ cc makedefs.c
  1228. X  $ link makedefs.obj,monst.obj,objects.obj,vmsmisc.obj,-
  1229. X      'vaxcrtl''gnulib',sys$input:/Opt
  1230. X! identification="makedefs 3.0.9"
  1231. X  $ milestone "makedefs"
  1232. X  $! create some build-time files
  1233. X  $ makedefs -p    !pm.h
  1234. X--- 121,127 ----
  1235. X  $ cc makedefs.c
  1236. X  $ link makedefs.obj,monst.obj,objects.obj,vmsmisc.obj,-
  1237. X      'vaxcrtl''gnulib',sys$input:/Opt
  1238. X! identification="makedefs 3.0.10"
  1239. X  $ milestone "makedefs"
  1240. X  $! create some build-time files
  1241. X  $ makedefs -p    !pm.h
  1242. X***************
  1243. X*** 162,171 ****
  1244. X  $list_done:
  1245. X  $     i = i + 1
  1246. X  $   if i.le.5 then  goto list_loop
  1247. X! $! one special case left
  1248. X! $ cc [-.vms]vmstermcap.c -
  1249. X!     /Define=("bcopy(s,d,n)=memcpy((d),(s),(n))","exit=vms_exit")
  1250. X  $ libr/Obj 'nethacklib' vmstermcap.obj/Insert
  1251. X  $!
  1252. X  $link:
  1253. X  $ milestone "<linking...>"
  1254. X--- 162,173 ----
  1255. X  $list_done:
  1256. X  $     i = i + 1
  1257. X  $   if i.le.5 then  goto list_loop
  1258. X! $! one special case left:  gcc chokes on these commas, but has real bcopy
  1259. X! $    vmstermcap_options = "/Define=(""bcopy(s,d,n)=memcpy(d,s,n)"",""exit=vms_exit"")"
  1260. X! $    if c_opt.eq.5 then  vmstermcap_options = "/Define=(""exit=vms_exit"")"
  1261. X! $ cc 'vmstermcap_options' [-.vms]vmstermcap.c
  1262. X  $ libr/Obj 'nethacklib' vmstermcap.obj/Insert
  1263. X+ $ delete vmstermcap.obj;*
  1264. X  $!
  1265. X  $link:
  1266. X  $ milestone "<linking...>"
  1267. X***************
  1268. X*** 172,178 ****
  1269. X  $ link/Exe=nethack 'nethacklib'/Lib/Incl=(vmsmain,allmain,vmsunix,vmstty,decl),-
  1270. X      sys$disk:[]monst.obj,objects.obj,-    !(data-only modules, like decl)
  1271. X      sys$input:/Opt,'vaxcrtl''gnulib'
  1272. X! identification="NetHack 3.0.9"
  1273. X  $ milestone "NetHack"
  1274. X  $     if c_opt.eq.10 then  goto done    !"LINK" only
  1275. X  $special:
  1276. X--- 174,180 ----
  1277. X  $ link/Exe=nethack 'nethacklib'/Lib/Incl=(vmsmain,allmain,vmsunix,vmstty,decl),-
  1278. X      sys$disk:[]monst.obj,objects.obj,-    !(data-only modules, like decl)
  1279. X      sys$input:/Opt,'vaxcrtl''gnulib'
  1280. X! identification="NetHack 3.0.10"
  1281. X  $ milestone "NetHack"
  1282. X  $     if c_opt.eq.10 then  goto done    !"LINK" only
  1283. X  $special:
  1284. X***************
  1285. X*** 188,194 ****
  1286. X  $ link lev_comp.obj,lev_lex.obj,lev_main.obj,-
  1287. X      monst.obj,objects.obj,alloc.obj,panic.obj,vmsmisc.obj,-
  1288. X      'vaxcrtl''gnulib',sys$input:/Opt
  1289. X! identification="lev_comp 3.0.9"
  1290. X  $ milestone "lev_comp"
  1291. X  $!
  1292. X  $done:
  1293. X--- 190,196 ----
  1294. X  $ link lev_comp.obj,lev_lex.obj,lev_main.obj,-
  1295. X      monst.obj,objects.obj,alloc.obj,panic.obj,vmsmisc.obj,-
  1296. X      'vaxcrtl''gnulib',sys$input:/Opt
  1297. X! identification="lev_comp 3.0.10"
  1298. X  $ milestone "lev_comp"
  1299. X  $!
  1300. X  $done:
  1301. X*** vms/vmsmain.c    Tue Jun 26 21:20:43 1990
  1302. X--- vms/vmsmain.c    Sat Jan  5 15:00:18 1991
  1303. X***************
  1304. X*** 283,289 ****
  1305. X      flags.moonphase = phase_of_the_moon();
  1306. X      if(flags.moonphase == FULL_MOON) {
  1307. X          You("are lucky!  Full moon tonight.");
  1308. X!         if(!u.uluck) change_luck(1);
  1309. X      } else if(flags.moonphase == NEW_MOON) {
  1310. X          pline("Be careful!  New moon tonight.");
  1311. X      }
  1312. X--- 283,289 ----
  1313. X      flags.moonphase = phase_of_the_moon();
  1314. X      if(flags.moonphase == FULL_MOON) {
  1315. X          You("are lucky!  Full moon tonight.");
  1316. X!         change_luck(1);
  1317. X      } else if(flags.moonphase == NEW_MOON) {
  1318. X          pline("Be careful!  New moon tonight.");
  1319. X      }
  1320. X***************
  1321. X*** 425,433 ****
  1322. X--- 425,435 ----
  1323. X      if (condition == SS$_ACCVIO         /* access violation */
  1324. X       || condition >= SS$_ASTFLT && condition <= SS$_TBIT
  1325. X       || condition >= SS$_ARTRES && condition <= SS$_INHCHME) {
  1326. X+ # ifdef WIZARD
  1327. X      if (wizard)
  1328. X          abort();    /* enter the debugger */
  1329. X      else
  1330. X+ # endif
  1331. X          hu = TRUE;  /* pretend that hangup has already been attempted */
  1332. X      }
  1333. X      return SS$_RESIGNAL;
  1334. X*** vms/vmstty.c    Tue Jun 26 22:46:12 1990
  1335. X--- vms/vmstty.c    Sat Jan  5 15:00:22 1991
  1336. X***************
  1337. X*** 8,15 ****
  1338. X--- 8,24 ----
  1339. X  
  1340. X  #include    <descrip.h>
  1341. X  #include    <iodef.h>
  1342. X+ #ifndef __GNUC__
  1343. X  #include    <smgdef.h>
  1344. X  #include    <ttdef.h>
  1345. X+ #else    /* values needed from missing include files */
  1346. X+ # define SMG$K_TRM_UP     274
  1347. X+ # define SMG$K_TRM_DOWN  275
  1348. X+ # define SMG$K_TRM_LEFT  276
  1349. X+ # define SMG$K_TRM_RIGHT 277
  1350. X+ # define TT$M_MECHTAB     0x00000100
  1351. X+ # define TT$M_MECHFORM     0x00080000
  1352. X+ #endif /* __GNUC__ */
  1353. X  #include <errno.h>
  1354. X  
  1355. X  #define vms_ok(sts) ((sts)&1)
  1356. X*** vms/vmsunix.c    Thu May 24 20:21:46 1990
  1357. X--- vms/vmsunix.c    Thu Jan 31 13:46:15 1991
  1358. X***************
  1359. X*** 23,31 ****
  1360. X  #undef off_t
  1361. X  #ifndef VAXC
  1362. X  #include <sys/stat.h>
  1363. X! #else   VAXC
  1364. X  #include <stat.h>
  1365. X! #endif  VAXC
  1366. X  #include <ctype.h>
  1367. X  #ifdef no_c$$translate
  1368. X  #include <errno.h>
  1369. X--- 23,31 ----
  1370. X  #undef off_t
  1371. X  #ifndef VAXC
  1372. X  #include <sys/stat.h>
  1373. X! #else
  1374. X  #include <stat.h>
  1375. X! #endif
  1376. X  #include <ctype.h>
  1377. X  #ifdef no_c$$translate
  1378. X  #include <errno.h>
  1379. X***************
  1380. X*** 106,112 ****
  1381. X  static struct stat buf, hbuf;
  1382. X  
  1383. X  void
  1384. X! gethdate(name) char *name; {
  1385. X      register char *np;
  1386. X  
  1387. X      if(stat(name, &hbuf))
  1388. X--- 106,112 ----
  1389. X  static struct stat buf, hbuf;
  1390. X  
  1391. X  void
  1392. X! gethdate(name) const char *name; {
  1393. X      register char *np;
  1394. X  
  1395. X      if(stat(name, &hbuf))
  1396. X***************
  1397. X*** 351,358 ****
  1398. X      return (getgid() << 16) | getuid();
  1399. X  }
  1400. X  
  1401. X  #if defined(CHDIR) || defined(SHELL)
  1402. X! unsigned int oprv[2];
  1403. X  
  1404. X  void
  1405. X  privoff()
  1406. X--- 351,451 ----
  1407. X      return (getgid() << 16) | getuid();
  1408. X  }
  1409. X  
  1410. X+ /*------*/
  1411. X+ #ifndef LNM$_STRING
  1412. X+ #include <lnmdef.h>    /* logical name definitions */
  1413. X+ #endif
  1414. X+ #define ENVSIZ LNM$C_NAMLENGTH  /*255*/
  1415. X+ 
  1416. X+ #define ENV_USR 0    /* user-mode */
  1417. X+ #define ENV_SUP 1    /* supervisor-mode */
  1418. X+ #define ENV_JOB 2    /* job-wide entry */
  1419. X+ 
  1420. X+ /* vms_define() - assign a value to a logical name */
  1421. X+ int
  1422. X+ vms_define(name, value, flag)
  1423. X+ const char *name;
  1424. X+ const char *value;
  1425. X+ int flag;
  1426. X+ {
  1427. X+     struct dsc { int len; const char *adr; };    /* string descriptor */
  1428. X+     struct itm3 { short buflen, itmcode; const char *bufadr; short *retlen; };
  1429. X+     static struct itm3 itm_lst[] = { {0,LNM$_STRING,0,0}, {0,0} };
  1430. X+     struct dsc nam_dsc, val_dsc, tbl_dsc;
  1431. X+     unsigned long result, SYS$CRELNM(), LIB$SET_LOGICAL();
  1432. X+ 
  1433. X+     /* set up string descriptors */
  1434. X+     nam_dsc.len = strlen( nam_dsc.adr = name );
  1435. X+     val_dsc.len = strlen( val_dsc.adr = value );
  1436. X+     tbl_dsc.len = strlen( tbl_dsc.adr = "LNM$PROCESS" );
  1437. X+ 
  1438. X+     switch (flag) {
  1439. X+     case ENV_JOB:    /* job logical name */
  1440. X+         tbl_dsc.len = strlen( tbl_dsc.adr = "LNM$JOB" );
  1441. X+         /*FALLTHRU*/
  1442. X+     case ENV_SUP:    /* supervisor-mode process logical name */
  1443. X+         result = LIB$SET_LOGICAL(&nam_dsc, &val_dsc, &tbl_dsc);
  1444. X+         break;
  1445. X+     case ENV_USR:    /* user-mode process logical name */
  1446. X+         itm_lst[0].buflen = val_dsc.len;
  1447. X+         itm_lst[0].bufadr = val_dsc.adr;
  1448. X+         result = SYS$CRELNM(0, &tbl_dsc, &nam_dsc, 0, itm_lst);
  1449. X+         break;
  1450. X+     default:    /*[ bad input ]*/
  1451. X+         result = 0;
  1452. X+         break;
  1453. X+     }
  1454. X+     result &= 1;    /* odd => success (== 1), even => failure (== 0) */
  1455. X+     return !result;    /* 0 == success, 1 == failure */
  1456. X+ }
  1457. X+ 
  1458. X+ /* vms_putenv() - create or modify an environment value */
  1459. X+ int
  1460. X+ vms_putenv(string)
  1461. X+ const char *string;
  1462. X+ {
  1463. X+     char name[ENVSIZ+1], value[ENVSIZ+1], *p;   /* [255+1] */
  1464. X+ 
  1465. X+     p = strchr(string, '=');
  1466. X+     if (p > string && p < string + sizeof name && strlen(p+1) < sizeof value) {
  1467. X+     (void)strncpy(name, string, p - string),  name[p - string] = '\0';
  1468. X+     (void)strcpy(value, p+1);
  1469. X+     return vms_define(name, value, ENV_USR);
  1470. X+     } else
  1471. X+     return 1;    /* failure */
  1472. X+ }
  1473. X+ 
  1474. X+ /*
  1475. X+    Figure out whether the termcap code will find a termcap file; if not,
  1476. X+    try to help it out.  This avoids modifying the GNU termcap sources and
  1477. X+    can simplify configuration for sites which don't already use termcap.
  1478. X+  */
  1479. X+ #define GNU_DEFAULT_TERMCAP "emacs_library:[etc]termcap.dat"
  1480. X+ #define NETHACK_DEF_TERMCAP "hackdir:termcap"
  1481. X+ 
  1482. X+ const char *
  1483. X+ verify_termcap()    /* called from startup(src/termcap.c) */
  1484. X+ {
  1485. X+     struct stat dummy;
  1486. X+     char *tc = getenv("TERMCAP");
  1487. X+     if (tc) return (const char *)0;    /* no fixups needed */
  1488. X+     if (!tc && !stat(GNU_DEFAULT_TERMCAP, &dummy)) tc = GNU_DEFAULT_TERMCAP;
  1489. X+     if (!tc && !stat(NETHACK_DEF_TERMCAP, &dummy)) tc = NETHACK_DEF_TERMCAP;
  1490. X+     if (!tc && !stat("termcap", &dummy))  tc = "termcap";  /* current dir */
  1491. X+     if (!tc && !stat("$TERMCAP", &dummy)) tc = "$TERMCAP"; /* alt environ */
  1492. X+     if (tc) {
  1493. X+     /* putenv(strcat(strcpy(buffer,"TERMCAP="),tc)); */
  1494. X+     vms_define("TERMCAP", tc, ENV_USR);
  1495. X+     } else {
  1496. X+     /* Perhaps later we'll construct a termcap entry string and return that
  1497. X+        when no file is found; for now, just return NULL unconditionally. */
  1498. X+     }
  1499. X+     return (const char *)0;
  1500. X+ }
  1501. X+ /*------*/
  1502. X+ 
  1503. X  #if defined(CHDIR) || defined(SHELL)
  1504. X! static unsigned long oprv[2];
  1505. X  
  1506. X  void
  1507. X  privoff()
  1508. X***************
  1509. X*** 380,387 ****
  1510. X      int status;
  1511. X  
  1512. X      settty((char *) NULL);    /* also calls end_screen() */
  1513. X-     (void) signal(SIGINT,SIG_DFL);
  1514. X      (void) signal(SIGQUIT,SIG_IGN);
  1515. X      if (!dosh_pid || !((status = LIB$ATTACH(&dosh_pid)) & 1))
  1516. X      {
  1517. X  #ifdef CHDIR
  1518. X--- 473,480 ----
  1519. X      int status;
  1520. X  
  1521. X      settty((char *) NULL);    /* also calls end_screen() */
  1522. X      (void) signal(SIGQUIT,SIG_IGN);
  1523. X+     (void) signal(SIGINT,SIG_DFL);
  1524. X      if (!dosh_pid || !((status = LIB$ATTACH(&dosh_pid)) & 1))
  1525. X      {
  1526. X  #ifdef CHDIR
  1527. X***************
  1528. X*** 403,409 ****
  1529. X  #endif
  1530. X      docrt();
  1531. X      if (!(status & 1))
  1532. X!         pline("Spawn failed.  Try again.");
  1533. X      return 0;
  1534. X  }
  1535. X  #endif
  1536. X--- 496,502 ----
  1537. X  #endif
  1538. X      docrt();
  1539. X      if (!(status & 1))
  1540. X!         pline("Spawn failed.  (%%x%08X) ", status);
  1541. X      return 0;
  1542. X  }
  1543. X  #endif
  1544. X
  1545. END_OF_FILE
  1546. if test 50416 -ne `wc -c <'patch10.05'`; then
  1547.     echo shar: \"'patch10.05'\" unpacked with wrong size!
  1548. fi
  1549. # end of 'patch10.05'
  1550. echo shar: End of archive 3 \(of 8\).
  1551. cp /dev/null ark3isdone
  1552. MISSING=""
  1553. for I in 1 2 3 4 5 6 7 8 ; do
  1554.     if test ! -f ark${I}isdone ; then
  1555.     MISSING="${MISSING} ${I}"
  1556.     fi
  1557. done
  1558. if test "${MISSING}" = "" ; then
  1559.     echo You have unpacked all 8 archives.
  1560.     rm -f ark[1-9]isdone
  1561. else
  1562.     echo You still need to unpack the following archives:
  1563.     echo "        " ${MISSING}
  1564. fi
  1565. ##  End of shell archive.
  1566. exit 0
  1567.